#include <algorithm>
#include <vector>
#include <iostream>
#include <iterator>
#include <cmath>
#include <cstdlib>
#include <catch2/catch.hpp>
#include <utils.hpp>
#include <wasm_config.hpp>
#include <eosio/vm/backend.hpp>

using namespace eosio;
using namespace eosio::vm;
extern wasm_allocator wa;

BACKEND_TEST_CASE( "Testing wasm <f64_0_wasm>", "[f64_0_wasm_tests]" ) {
   using backend_t = backend<std::nullptr_t, TestType>;
   auto code = backend_t::read_wasm( std::string(wasm_directory) + "f64.0.wasm");
   backend_t bkend( code );
   bkend.set_wasm_allocator( &wa );
   bkend.initialize(nullptr);

   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775810));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(2));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146305));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370495));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146303));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370497));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9227875636482146305));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9227875636482146303));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(4503599627370495));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(4503599627370497));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9232379236109516800));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9007199254740992));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13832806255468478464));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4609434218613702656));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842695242987613464));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618197306225995032));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13841569343080770840));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4619323206132837656));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13832806255468478464));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4609434218613702656));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13835058055282163712));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4611686018427387904));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13843258192941034776));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4617634356272573720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13841006393127349528));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4619886156086258968));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13842695242987613464));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13841569343080770840));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4618197306225995032));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4619323206132837656));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13843258192941034776));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13841006393127349528));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4617634356272573720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4619886156086258968));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13846635892661562648));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4623263855806786840));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "add", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9223372036854775810));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(2));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(4503599627370495));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9227875636482146305));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(4503599627370497));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9227875636482146303));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9227875636482146303));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9227875636482146305));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(4503599627370497));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(4503599627370495));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9232379236109516800));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9007199254740992));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13832806255468478464));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4609434218613702656));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4618197306225995032));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13842695242987613464));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4619323206132837656));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13841569343080770840));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13832806255468478464));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4609434218613702656));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13835058055282163712));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4611686018427387904));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4617634356272573720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13843258192941034776));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4619886156086258968));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13841006393127349528));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13841569343080770840));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13842695242987613464));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4619323206132837656));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4618197306225995032));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13841006393127349528));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13843258192941034776));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4619886156086258968));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4617634356272573720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13846635892661562648));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4623263855806786840));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sub", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(0));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(6));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9223372036854775814));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9223372036854775814));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(6));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(4382002437431492607));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(13605374474286268415));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(13605374474286268415));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(4382002437431492607));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(2251799813685248));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9225623836668461056));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9225623836668461056));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(2251799813685248));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(16081437006769432));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9239453473861545240));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9239453473861545240));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(16081437006769432));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(4616189618054758399));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(13839561654909534207));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(13839561654909534207));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(4616189618054758399));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(2251799813685248));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9225623836668461056));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9225623836668461056));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(2251799813685248));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4598175219545276416));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13821547256400052224));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13821547256400052224));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4598175219545276416));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4614256656552045848));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13837628693406821656));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13837628693406821656));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4614256656552045848));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9214364837600034815));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18437736874454810623));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18437736874454810623));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9214364837600034815));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(6));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9223372036854775814));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775814));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(6));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(16081437006769432));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9239453473861545240));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9239453473861545240));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(16081437006769432));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4614256656552045848));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13837628693406821656));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13837628693406821656));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4614256656552045848));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4630752910647379422));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13854124947502155230));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13854124947502155230));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4630752910647379422));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(4382002437431492607));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(13605374474286268415));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(13605374474286268415));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(4382002437431492607));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(4616189618054758399));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(13839561654909534207));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(13839561654909534207));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4616189618054758399));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9214364837600034815));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(18437736874454810623));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(18437736874454810623));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9214364837600034815));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(0)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "mul", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(0)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(0));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(4372995238176751616));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(13596367275031527424));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(13596367275031527424));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4372995238176751616));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(2));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9223372036854775810));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9223372036854775810));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(2));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(0));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(4841369599423283200));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(14064741636278059008));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(14064741636278059008));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(4841369599423283200));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9007199254740992));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9232379236109516800));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9232379236109516800));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9007199254740992));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(716770142402832));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9224088806997178640));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9224088806997178640));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(716770142402832));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(0));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9205357638345293824));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(18428729675200069632));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(18428729675200069632));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9205357638345293824));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4590398581802387587));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13813770618657163395));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13813770618657163395));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4590398581802387587));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(562949953421312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9223934986808197120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9223934986808197120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(562949953421312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(0));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9209861237972664320));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(18433233274827440128));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(18433233274827440128));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9209861237972664320));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4611686018427387904));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13835058055282163712));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13835058055282163712));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4611686018427387904));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4594902181429758083));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13818274218284533891));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13818274218284533891));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4594902181429758083));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(1125899906842624));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9224497936761618432));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9224497936761618432));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(1125899906842624));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(0));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4623263855806786840));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13846635892661562648));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13846635892661562648));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4623263855806786840));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(7074237752028441));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9230446274606804249));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9230446274606804249));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(7074237752028441));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(0));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9206588199857145986));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(18429960236711921794));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(18429960236711921794));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9206588199857145986));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(0));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "div", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(0));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(1));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "min", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775808)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(0)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9223372036854775809)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(1)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9227875636482146304)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4503599627370496)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13826050856027422720)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4602678819172646912)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13830554455654793216)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4607182418800017408)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(13842132293034192152)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(4618760256179416344)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181119)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405311)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775809));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(1));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9227875636482146304));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4503599627370496));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13826050856027422720));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4602678819172646912));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842132293034192152));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618760256179416344));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18442240474082181120)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9218868437227405312)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9223372036854775808)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(0)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(1)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4503599627370496)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4602678819172646912)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4607182418800017408)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(4618760256179416344)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9218868437227405311)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9218868437227405312)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18444492273895866368)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(18443366373989023744)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9221120237041090560)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "max", bit_cast<double>(UINT64_C(9219994337134247936)), bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(9223372036854775809)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(2188749418902061056));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(9227875636482146304)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(2305843009213693952));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(13826050856027422720)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4604544271217802189));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(13830554455654793216)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(13842132293034192152)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4612826843881809669));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(18442240474082181119)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(6913025428013711359));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(18442240474082181120)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "sqrt", bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13842939354630062080));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618441417868443648));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "floor", bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13841813454723219456));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4619567317775286272));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "ceil", bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13841813454723219456));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618441417868443648));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "trunc", bit_cast<double>(UINT64_C(9219994337134247936)))));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(9223372036854775808)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(0)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(9223372036854775809)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(1)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(9227875636482146304)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(4503599627370496)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(13826050856027422720)))->to_f64()) == UINT64_C(9223372036854775808));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(4602678819172646912)))->to_f64()) == UINT64_C(0));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(13830554455654793216)))->to_f64()) == UINT64_C(13830554455654793216));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(4607182418800017408)))->to_f64()) == UINT64_C(4607182418800017408));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(13842132293034192152)))->to_f64()) == UINT64_C(13841813454723219456));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(4618760256179416344)))->to_f64()) == UINT64_C(4618441417868443648));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(18442240474082181119)))->to_f64()) == UINT64_C(18442240474082181119));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(9218868437227405311)))->to_f64()) == UINT64_C(9218868437227405311));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(18442240474082181120)))->to_f64()) == UINT64_C(18442240474082181120));
   CHECK(bit_cast<uint64_t>(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(9218868437227405312)))->to_f64()) == UINT64_C(9218868437227405312));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(18444492273895866368)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(18443366373989023744)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(9221120237041090560)))));
   CHECK(check_nan(bkend.call_with_return(nullptr, "env", "nearest", bit_cast<double>(UINT64_C(9219994337134247936)))));
}

BACKEND_TEST_CASE( "Testing wasm <f64_1_wasm>", "[f64_1_wasm_tests]" ) {
   using backend_t = backend<std::nullptr_t, TestType>;
   auto code = backend_t::read_wasm( std::string(wasm_directory) + "f64.1.wasm");
   CHECK_THROWS_AS(backend_t(code), std::exception);
}

BACKEND_TEST_CASE( "Testing wasm <f64_10_wasm>", "[f64_10_wasm_tests]" ) {
   using backend_t = backend<std::nullptr_t, TestType>;
   auto code = backend_t::read_wasm( std::string(wasm_directory) + "f64.10.wasm");
   CHECK_THROWS_AS(backend_t(code), std::exception);
}

BACKEND_TEST_CASE( "Testing wasm <f64_11_wasm>", "[f64_11_wasm_tests]" ) {
   using backend_t = backend<std::nullptr_t, TestType>;
   auto code = backend_t::read_wasm( std::string(wasm_directory) + "f64.11.wasm");
   CHECK_THROWS_AS(backend_t(code), std::exception);
}

BACKEND_TEST_CASE( "Testing wasm <f64_2_wasm>", "[f64_2_wasm_tests]" ) {
   using backend_t = backend<std::nullptr_t, TestType>;
   auto code = backend_t::read_wasm( std::string(wasm_directory) + "f64.2.wasm");
   CHECK_THROWS_AS(backend_t(code), std::exception);
}

BACKEND_TEST_CASE( "Testing wasm <f64_3_wasm>", "[f64_3_wasm_tests]" ) {
   using backend_t = backend<std::nullptr_t, TestType>;
   auto code = backend_t::read_wasm( std::string(wasm_directory) + "f64.3.wasm");
   CHECK_THROWS_AS(backend_t(code), std::exception);
}

BACKEND_TEST_CASE( "Testing wasm <f64_4_wasm>", "[f64_4_wasm_tests]" ) {
   using backend_t = backend<std::nullptr_t, TestType>;
   auto code = backend_t::read_wasm( std::string(wasm_directory) + "f64.4.wasm");
   CHECK_THROWS_AS(backend_t(code), std::exception);
}

BACKEND_TEST_CASE( "Testing wasm <f64_5_wasm>", "[f64_5_wasm_tests]" ) {
   using backend_t = backend<std::nullptr_t, TestType>;
   auto code = backend_t::read_wasm( std::string(wasm_directory) + "f64.5.wasm");
   CHECK_THROWS_AS(backend_t(code), std::exception);
}

BACKEND_TEST_CASE( "Testing wasm <f64_6_wasm>", "[f64_6_wasm_tests]" ) {
   using backend_t = backend<std::nullptr_t, TestType>;
   auto code = backend_t::read_wasm( std::string(wasm_directory) + "f64.6.wasm");
   CHECK_THROWS_AS(backend_t(code), std::exception);
}

BACKEND_TEST_CASE( "Testing wasm <f64_7_wasm>", "[f64_7_wasm_tests]" ) {
   using backend_t = backend<std::nullptr_t, TestType>;
   auto code = backend_t::read_wasm( std::string(wasm_directory) + "f64.7.wasm");
   CHECK_THROWS_AS(backend_t(code), std::exception);
}

BACKEND_TEST_CASE( "Testing wasm <f64_8_wasm>", "[f64_8_wasm_tests]" ) {
   using backend_t = backend<std::nullptr_t, TestType>;
   auto code = backend_t::read_wasm( std::string(wasm_directory) + "f64.8.wasm");
   CHECK_THROWS_AS(backend_t(code), std::exception);
}

BACKEND_TEST_CASE( "Testing wasm <f64_9_wasm>", "[f64_9_wasm_tests]" ) {
   using backend_t = backend<std::nullptr_t, TestType>;
   auto code = backend_t::read_wasm( std::string(wasm_directory) + "f64.9.wasm");
   CHECK_THROWS_AS(backend_t(code), std::exception);
}

